В этом документе представлены следующие графики:
График распределения количества отзывов по месяцам;
График распредления отзывов в % (Сколько отзывов было написано на каждый отель);
Диаграмма распределения оценок отзывов по месяцам;
Диаграмма распределения отзывов по сентименту (негативные/позитивные) для каждого отеля;
Сводная таблица с информацией о длине отзывов для каждого отеля (мин-макс, среднее, медиана);
График с частыми существительными, прилагательными и глаголами для каждого отеля (топ-10);
График с наиболее характерными существительными, прилагательными и глаголами, с которыми ассоциируется отель (топ-10).
В данной таблице представлена информация о количестве отзывов, собранных с Booking и Яндекс Путешествия. К сожалению, отель Кемпински (Мойка 22) не был представлен на Booking.com, поэтому данные по нему были собраны только с Яндекс Путешествия.
data_all_summary = data_all %>% group_by(Hotel) %>% dplyr::summarise(number_of_reviews = n(), stars_mean = round(mean(stars)), stars_median = median(stars), stars_min = min(stars), stars_max = max(stars), min_date = min(date), max_date = max(date))
data_all_summary = cbind(data_all_summary, data_all %>% filter(!is.na(review_text)) %>% group_by(Hotel) %>% summarise(NAs = n(), length_mean = round(mean(length),0)) %>% select(-Hotel)) %>% select(Hotel, number_of_reviews, NAs, stars_mean, stars_median, stars_min, stars_max, min_date, max_date, length_mean)
data_all_summary %>%
datatable(colnames = c('Отель' = 2, 'Кол-во отзывов' = 3, 'Кол-во отзывов с текстом' = 4, 'Ср. оценка отзывов' = 5, 'Медиана оценки отзывов' = 6, 'Мин. оценка' = 7, 'Макс. оценка' = 8, 'Дата первого отзыва' = 9, 'Дата последнего отзыва' = 10, 'Cр. длина отзывов' = 11), options = list(pageLength=7))
data_all %>% group_by(Hotel) %>% slice_max(order_by = length, n = 5) %>% select(Hotel, review_text, date, stars) %>%
datatable(colnames = c('Отель' = 2, 'Отзыв' = 3, 'Дата' = 4, 'Кол-во звезд' = 4), filter = 'top', options = list(pageLength=10, scrollX='400px', scrollY='350px'))
C помощью графика можно изучить распределение числа отзывов в конкретные месяца и года среди разных отелей.
Тут бы лучше мотреть за конкретный период, так как отзывы на отель Wawelberg стали появлятся позже всех.
date_month$year = year(date_month$date)
shared_date <- SharedData$new(date_month %>% select(-date))
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)', 'rgb(114,147,203)', 'blue')
bscols(widths = c(2, 10),
list(
filter_checkbox("year", "Год", shared_date, ~year),
filter_checkbox("Hotel", "Отель", shared_date, ~Hotel)),
plot_ly(shared_date, labels = ~Hotel, values = ~count, colors = "Dark2", type = 'pie',
textposition = 'inside',
textinfo = 'label+percent', showlegend = F,
marker = list(line = list(color = '#FFFFFF'))) %>%
layout(
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
)
| Characteristic | Astoria, N = 1,145 | Four seasons, N = 826 | Grand europe, N = 1,527 | Lotte, N = 978 | Moika 22, N = 597 | SO, N = 580 | Wawelberg, N = 428 |
|---|---|---|---|---|---|---|---|
| Длина отзыва | |||||||
| Среднее | 26 | 26 | 28 | 23 | 24 | 34 | 36 |
| Медиана | 13 | 12 | 16 | 13 | 11 | 17 | 20 |
| Мин-Макс | 1- 637 | 1- 451 | 1- 410 | 1- 336 | 1- 467 | 1- 635 | 1- 424 |
Также было предложено посмотреть на распределение негативных/позитивных отзывов по месяцам. Для определения эмоциональной окраски, использовался словарь “Карта слов”. Для каждого отзыва была вычислена эмоциональная оценка, где позитивным считался отзыв со значением более или равно 0.45, нейтральный отзыв от 0.45 до -0.1 и негативным считались все отзывы. набравшие оценку менее -0.1.
Используемый метод: tf-id.
Идея tf-idf состоит в том, чтобы найти важные слова для содержания каждого документа, уменьшив вес для часто используемых слов и увеличив вес для слов, которые не очень часто используются в коллекции или корпусе документов